http,servlet,jsp-java web后台知识简单总结
http,servlet,jsp 总结,包括 servletConfig,servletContext,servletRequest,servletResponse,session,cookie,EL 表达式,jstl 标签库,servletFilter等知识点,这里只是总结一些介绍性的东西,具体的应用查看对用的 API 文档就好,就不说具体应用了。
http
Http 协议格式参考网页: https://my.oschina.net/manmao/blog/549123
其中各字段的内容我就没详细看了,以后用到再看,反正都是了解性东西。
servlet
一个 servlet 实现对象可以处理一个请求,一个 web 应用中有多个 servlet 实现对象,他们之间的数据交互通过 servletContext 完成。
Servlet的运行过程
Servlet程序是由WEB服务器调用,web服务器收到客户端的Servlet访问请求后:
- Web服务器首先检查是否已经装载并创建了该Servlet的实例对象。如果是,则直接执行第4步,否则,执行第2步。
- 装载并创建该Servlet的一个实例对象。
- 调用Servlet实例对象的init()方法。
- 建一个用于封装HTTP请求消息的HttpServletRequest对象和一个代表HTTP响应消息的HttpServletResponse对象,然后调用Servlet的service()方法并将请求和响应对象作为参数传递进去。
- WEB应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destroy()方法。
servletConfig
在 Servlet 的配置文件中,可以使用一个或多个 <init-param> 标签为 servlet 配置一些初始化参数。
当 servlet 配置了初始化参数后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中,并在调用servlet的init方法时,将ServletConfig对象传递给servlet。进而,程序员通过ServletConfig对象就可以得到当前servlet的初始化参数信息。
### servletContext
WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用。
ServletContext对象被包含在ServletConfig对象中,开发人员在编写servlet时,可以通过ServletConfig.getServletContext方法获得对ServletContext对象的引用。
由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯。ServletContext对象通常也被称之为context域对象。
ServletContext应用
- 多个Servlet通过ServletContext对象实现数据共享。
- 获取WEB应用的初始化参数。
- 实现Servlet的转发。
- 利用ServletContext对象读取资源文件。
得到文件路径
读取资源文件的三种方式
.properties文件(属性文件)
servletRequest
API信息:
获得客户机信息
getRequestURL方法返回客户端发出请求时的完整URL。
getRequestURI方法返回请求行中的资源名部分。
getQueryString 方法返回请求行中的参数部分。
getPathInfo方法返回请求URL中的额外路径信息。额外路径信息是请求URL中的位于Servlet的路径之后和查询参数之前的内容,它以“/”开头。
getRemoteAddr方法返回发出请求的客户机的IP地址
getRemoteHost方法返回发出请求的客户机的完整主机名
getRemotePort方法返回客户机所使用的网络端口号
getLocalAddr方法返回WEB服务器的IP地址。
getLocalName方法返回WEB服务器的主机名
获得客户机请求头
getHeader方法
getHeaders方法
getHeaderNames方法
获得客户机请求参数(客户端提交的数据)
getParameter方法
getParameterValues(String name)方法
getParameterNames方法
getParameterMap方法
request常见应用
- 防盗链
- 各种表单输入项数据的获取
text、password、radio、checkbox、file、select、textarea、 hidden、image、button给js编程用 - 请求参数的中文乱码问题
- Javascript防止表单重复提交
- URL地址的编码
- request对象实现请求转发:请求转发指一个web资源收到客户端请求后,通知服务器去调用另外一个web资源进行处理。
- 请求转发的应用场景:MVC设计模式
- request对象提供了一个getRequestDispatcher方法,该方法返回一个RequestDispatcher对象,调用这个对象的forward方法可以实现请求转发。
9。 request对象同时也是一个域对象,开发人员通过request对象在实现转发时,把数据通过request对象带给其它web资源处理。
setAttribute方法
getAttribute方法
removeAttribute方法
getAttributeNames方法
response常见应用
- 向客户端输出中文数据
分别以OutputStream和PrintWriter输出
用OutputStream输出1,客户端看到的是什么? - 文件下载
- 生成随机图片
- 发送http头,控制浏览器定时刷新网页(REFRESH)
- 发送http头,控制浏览器禁止缓存当前文档内容
多学一招:使用html语言里面的标签来控制浏览器行为 - 通过response实现请求重定向。
- 请求重定向指:一个web资源收到客户端请求后,通知客户端去访问另外一个web资源,这称之为请求重定向。
应用场景:用户注册。
实现方式:response.sendRedirect()
实现原理:302状态码和location头即可实现重定向
session Cookie
什么是会话?
会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话。
会话过程中要解决的一些问题?
每个用户在使用浏览器与服务器进行会话的过程中,不可避免各自会产生一些数据,服务器要想办法为每个用户保存这些数据。
例如:多个用户点击超链接通过一个servlet各自购买了一个商品,服务器应该想办法把每一个用户购买的商品保存在各自的地方,以便于这些用户点结帐servlet时,结帐servlet可以得到用户各自购买的商品为用户结帐。
保存会话数据的两种技术:
- Cookie
Cookie是客户端技术,服务器把每个用户的数据以cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据了。 - Session
Session是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的session对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问服务器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务。
session 技术
cookie 技术
JSP
MVC 架构中的 view 用的就是 jsp 技术。
jsp 原理:jsp 会被 tomcat 翻译为一个 servlet 实例对象。
jsp 语法挺简答的,就是 9 大隐式对象要记一下。
掌握下面的就差不多了:
JSP表达式
JSP脚本程序
JSP注释
JSP指令
JSP标签
JSP隐式对象
参考网页:
http://www.runoob.com/jsp/jsp-implicit-objects.html
EL表达式入门
EL表达式用于获取数据,在JSP页面中可使用${标识符}的形式,通知JSP引擎调用pageContext.findAttribute()方法,以标识符为关键字从各个域对象中获取对象。如果域对象中不存在标识符所对应的对象,则返回结果为””(注意,不是null)。
EL表达式中也可以使用${customerBean.address}的形式来访问JavaBean对象的属性。
结合JSTL标签,EL表达式也可轻松获取各种集合中的元素。
EL表达式也可使用类如${1==1}的形式进行简单的逻辑判断。
详细学习,请见:
http://www.runoob.com/jsp/jsp-expression-language.html
JSTL标签库入门
JSTL是sun公司开发的一套标签库,使用JSTL可以在页面中实现一些简单的逻辑,从而替换页面中的脚本代码。
在页面中使用JSTL标签需完成以下2个步骤:
1. 导入jstl.jar和standerd.jar这两个JSTL的jar文件。
2. 在JSP页面中使用<%@ tablib url=“” prifix=“” %>元素导入标签库。
JSTL标签库中常用标签:
<c:foreach var=“” items=“”>
<c:if test=“”>
详细学习,请见:
http://www.runoob.com/jsp/jsp-jstl.html
servletFilter
Servlet API中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter。通过Filter技术,开发人员可以实现用户在访问某个目标资源之前,对访问的请求和响应进行拦截,如下所示:
自己感觉类似于动态代理,或者是面向切面编程的思想。
其他的一些知识和 httpServlet 差不多,就不详细说了。